<html>
   <head>
      <link rel="stylesheet" type="text/css" href="style.css" />
   </head>
   <body onload="">
<h2 class="comptitle">Msg File <i>src/overlay/pastry/PastryMessage.msg</i></h2>
<table class="typetable">
   <tr>
      <th>Name</th>
      <th>Description</th>
   </tr>
<tr>
   <td>
      <a href="PastryMsgType.html">PastryMsgType</a>
      <i> (enum)</i>
   </td>
   <td>
<i>(no description)</i>
   </td>
</tr>
<tr>
   <td>
      <a href="PastryStateMsgType.html">PastryStateMsgType</a>
      <i> (enum)</i>
   </td>
   <td>
<i>(no description)</i>
   </td>
</tr>
<tr>
   <td>
      <a href="PastryMessage.html">PastryMessage</a>
      <i> (packet)</i>
   </td>
   <td>

<p>Base message for all messages used by <a href="oversim.overlay.pastry.Pastry.html">Pastry</a></p>
   </td>
</tr>
<tr>
   <td>
      <a href="PastryJoinMessage.html">PastryJoinMessage</a>
      <i> (packet)</i>
   </td>
   <td>

<p>Message used to join a pastry overlay</p>
   </td>
</tr>
<tr>
   <td>
      <a href="PastryStateMessage.html">PastryStateMessage</a>
      <i> (packet)</i>
   </td>
   <td>

<p>Message used to send a PastryState</p>
   </td>
</tr>
<tr>
   <td>
      <a href="PastryFindNodeExtData.html">PastryFindNodeExtData</a>
      <i> (packet)</i>
   </td>
   <td>

<p>Message used to find a <a href="oversim.overlay.pastry.Pastry.html">Pastry</a> node</p>
   </td>
</tr>
<tr>
   <td>
      <a href="PastryNewLeafsMessage.html">PastryNewLeafsMessage</a>
      <i> (packet)</i>
   </td>
   <td>

<p>Message used to inform about new PastryLeafs</p>
   </td>
</tr>
<tr>
   <td>
      <a href="PastrySendState.html">PastrySendState</a>
      <i> (packet)</i>
   </td>
   <td>
<i>(no description)</i>
   </td>
</tr>
<tr>
   <td>
      <a href="PastryLeafsetMessage.html">PastryLeafsetMessage</a>
      <i> (packet)</i>
   </td>
   <td>
<i>(no description)</i>
   </td>
</tr>
<tr>
   <td>
      <a href="PastryRoutingRowRequestMessage.html">PastryRoutingRowRequestMessage</a>
      <i> (packet)</i>
   </td>
   <td>
<i>(no description)</i>
   </td>
</tr>
<tr>
   <td>
      <a href="PastryRoutingRowMessage.html">PastryRoutingRowMessage</a>
      <i> (packet)</i>
   </td>
   <td>
<i>(no description)</i>
   </td>
</tr>
<tr>
   <td>
      <a href="PastryRequestMessage.html">PastryRequestMessage</a>
      <i> (packet)</i>
   </td>
   <td>

<p>Message used to request PastryState or a Leafset</p>
   </td>
</tr>
</table>
<h3 class="subtitle">Source code:</h3>
<pre class="src"><span style="color: #808080; font-style: italic; ">//
// Copyright (C) 2006 Institut fuer Telematik, Universitaet Karlsruhe (TH)
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//
</span><span style="color: #000000; ">
</span><span style="color: #808080; font-style: italic; ">//
// </span><span style="color: #000080; ">@author</span><span style="color: #808080; font-style: italic; "> Felix Palmen
//
</span><span style="color: #000000; ">
</span><span style="color: #800000; font-weight: bold; ">cplusplus</span><span style="color: #000000; "> {{
#</span><span style="color: #000000; ">include</span><span style="color: #000000; "> &lt;</span><span style="color: #000000; ">IPvXAddress</span><span style="color: #000000; ">.</span><span style="color: #000000; ">h</span><span style="color: #000000; ">&gt;
#</span><span style="color: #000000; ">include</span><span style="color: #000000; "> &lt;</span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; ">.</span><span style="color: #000000; ">h</span><span style="color: #000000; ">&gt;
#</span><span style="color: #000000; ">include</span><span style="color: #000000; "> &lt;</span><span style="color: #000000; ">OverlayKey</span><span style="color: #000000; ">.</span><span style="color: #000000; ">h</span><span style="color: #000000; ">&gt;
#</span><span style="color: #000000; ">include</span><span style="color: #000000; "> &lt;</span><span style="color: #000000; ">CommonMessages_m</span><span style="color: #000000; ">.</span><span style="color: #000000; ">h</span><span style="color: #000000; ">&gt;

</span><span style="color: #808080; font-style: italic; ">// constants for message length in bit
</span><span style="color: #000000; ">static</span><span style="color: #000000; "> </span><span style="color: #000000; ">const</span><span style="color: #000000; "> </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRYTYPE_L</span><span style="color: #000000; "> = </span><span style="color: #008000; ">8</span><span style="color: #000000; ">;
</span><span style="color: #000000; ">static</span><span style="color: #000000; "> </span><span style="color: #000000; ">const</span><span style="color: #000000; "> </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRYSTATETYPE_L</span><span style="color: #000000; "> = </span><span style="color: #008000; ">8</span><span style="color: #000000; ">;
</span><span style="color: #000000; ">static</span><span style="color: #000000; "> </span><span style="color: #000000; ">const</span><span style="color: #000000; "> </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRYREQUESTTYPE_L</span><span style="color: #000000; "> = </span><span style="color: #008000; ">0</span><span style="color: #000000; ">;
</span><span style="color: #000000; ">static</span><span style="color: #000000; "> </span><span style="color: #000000; ">const</span><span style="color: #000000; "> </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">LASTHOPFLAG_L</span><span style="color: #000000; "> = </span><span style="color: #008000; ">8</span><span style="color: #000000; ">;
</span><span style="color: #000000; ">static</span><span style="color: #000000; "> </span><span style="color: #000000; ">const</span><span style="color: #000000; "> </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">TIMESTAMP_L</span><span style="color: #000000; "> = </span><span style="color: #008000; ">32</span><span style="color: #000000; ">;
</span><span style="color: #000000; ">static</span><span style="color: #000000; "> </span><span style="color: #000000; ">const</span><span style="color: #000000; "> </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRYFINDNODEEXTDATA_L</span><span style="color: #000000; "> = </span><span style="color: #000000; ">NODEHANDLE_L</span><span style="color: #000000; "> + </span><span style="color: #000000; ">HOPCOUNT_L</span><span style="color: #000000; ">;

#</span><span style="color: #000000; ">define</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRY_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) (</span><span style="color: #000000; ">BASEOVERLAY_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) + </span><span style="color: #000000; ">PASTRYTYPE_L</span><span style="color: #000000; ">)
#</span><span style="color: #000000; ">define</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRYJOIN_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) (</span><span style="color: #000000; ">PASTRY_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) + </span><span style="color: #000000; ">TRANSPORTADDRESS_L</span><span style="color: #000000; "> + </span><span style="color: #000000; ">HOPCOUNT_L</span><span style="color: #000000; ">)
#</span><span style="color: #000000; ">define</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRYREQ_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) (</span><span style="color: #000000; ">PASTRY_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) + </span><span style="color: #000000; ">TRANSPORTADDRESS_L</span><span style="color: #000000; "> + </span><span style="color: #000000; ">PASTRYREQUESTTYPE_L</span><span style="color: #000000; ">)
#</span><span style="color: #000000; ">define</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRYSTATE_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) (</span><span style="color: #000000; ">PASTRY_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) + </span><span style="color: #000000; ">TRANSPORTADDRESS_L</span><span style="color: #000000; "> \
        + </span><span style="color: #000000; ">NODEHANDLE_L</span><span style="color: #000000; "> * \
        (</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">getRoutingTableArraySize</span><span style="color: #000000; ">() + </span><span style="color: #000000; ">msg</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">getLeafSetArraySize</span><span style="color: #000000; ">() \
        + </span><span style="color: #000000; ">msg</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">getNeighborhoodSetArraySize</span><span style="color: #000000; ">()) + </span><span style="color: #000000; ">ARRAYSIZE_L</span><span style="color: #000000; "> + </span><span style="color: #000000; ">HOPCOUNT_L</span><span style="color: #000000; "> + \
        </span><span style="color: #000000; ">LASTHOPFLAG_L</span><span style="color: #000000; "> + </span><span style="color: #000000; ">TIMESTAMP_L</span><span style="color: #000000; ">)
#</span><span style="color: #000000; ">define</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRYNEWLEAFS_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) (</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">getLeafsArraySize</span><span style="color: #000000; ">() * </span><span style="color: #000000; ">NODEHANDLE_L</span><span style="color: #000000; "> + \
        </span><span style="color: #000000; ">ARRAYSIZE_L</span><span style="color: #000000; ">)
#</span><span style="color: #000000; ">define</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRYLEAFSET_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) (</span><span style="color: #000000; ">PASTRY_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) + </span><span style="color: #000000; ">TRANSPORTADDRESS_L</span><span style="color: #000000; "> \
        + </span><span style="color: #000000; ">NODEHANDLE_L</span><span style="color: #000000; "> * </span><span style="color: #000000; ">msg</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">getLeafSetArraySize</span><span style="color: #000000; ">() + </span><span style="color: #000000; ">ARRAYSIZE_L</span><span style="color: #000000; ">)
#</span><span style="color: #000000; ">define</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRYRTREQ_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) (</span><span style="color: #000000; ">PASTRY_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) + </span><span style="color: #000000; ">TRANSPORTADDRESS_L</span><span style="color: #000000; ">)
#</span><span style="color: #000000; ">define</span><span style="color: #000000; "> </span><span style="color: #000000; ">PASTRYRTABLE_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) (</span><span style="color: #000000; ">PASTRY_L</span><span style="color: #000000; ">(</span><span style="color: #000000; ">msg</span><span style="color: #000000; ">) + </span><span style="color: #000000; ">TRANSPORTADDRESS_L</span><span style="color: #000000; "> \
        + </span><span style="color: #000000; ">NODEHANDLE_L</span><span style="color: #000000; "> * </span><span style="color: #000000; ">msg</span><span style="color: #000000; ">-&gt;</span><span style="color: #000000; ">getRoutingTableArraySize</span><span style="color: #000000; ">() + </span><span style="color: #000000; ">ARRAYSIZE_L</span><span style="color: #000000; ">)
}}


</span><span style="color: #800000; font-weight: bold; ">class</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">noncobject</span><span style="color: #000000; "> </span><span style="color: #000000; ">IPvXAddress</span><span style="color: #000000; ">;
</span><span style="color: #800000; font-weight: bold; ">class</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">noncobject</span><span style="color: #000000; "> </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; ">;
</span><span style="color: #800000; font-weight: bold; ">class</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">noncobject</span><span style="color: #000000; "> </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; ">;
</span><span style="color: #800000; font-weight: bold; ">class</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">noncobject</span><span style="color: #000000; "> </span><span style="color: #000000; ">OverlayKey</span><span style="color: #000000; ">;

</span><span style="color: #800000; font-weight: bold; ">class</span><span style="color: #000000; "> </span><span style="color: #000000; ">BaseOverlayMessage</span><span style="color: #000000; ">;
</span><span style="color: #800000; font-weight: bold; ">class</span><span style="color: #000000; "> </span><span style="color: #000000; ">BaseCallMessage</span><span style="color: #000000; ">;
</span><span style="color: #800000; font-weight: bold; ">class</span><span style="color: #000000; "> </span><span style="color: #000000; ">BaseResponseMessage</span><span style="color: #000000; ">;
</span><span style="color: #800000; font-weight: bold; ">class</span><span style="color: #000000; "> </span><span style="color: #000000; ">BaseAppDataMessage</span><span style="color: #000000; ">;


</span><span style="color: #800000; font-weight: bold; ">enum</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryMsgType</span><span style="color: #000000; ">
{
    </span><span style="color: #000000; ">PASTRY_MSG_STD</span><span style="color: #000000; "> = </span><span style="color: #008000; ">0</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_MSG_JOIN</span><span style="color: #000000; "> = </span><span style="color: #008000; ">1</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_MSG_STATE</span><span style="color: #000000; "> = </span><span style="color: #008000; ">2</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_MSG_REQ</span><span style="color: #000000; "> = </span><span style="color: #008000; ">3</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_MSG_LEAFSET</span><span style="color: #000000; "> = </span><span style="color: #008000; ">4</span><span style="color: #000000; ">;	
    </span><span style="color: #000000; ">PASTRY_MSG_ROWREQ</span><span style="color: #000000; "> = </span><span style="color: #008000; ">5</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_MSG_RROW</span><span style="color: #000000; "> = </span><span style="color: #008000; ">6</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_MSG_LEAFSET_PULL</span><span style="color: #000000; "> = </span><span style="color: #008000; ">7</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_REQ_REPAIR</span><span style="color: #000000; "> = </span><span style="color: #008000; ">8</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_REQ_STATE</span><span style="color: #000000; "> = </span><span style="color: #008000; ">9</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_REQ_LEAFSET</span><span style="color: #000000; "> = </span><span style="color: #008000; ">10</span><span style="color: #000000; ">;
}

</span><span style="color: #800000; font-weight: bold; ">enum</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryStateMsgType</span><span style="color: #000000; ">
{
    </span><span style="color: #000000; ">PASTRY_STATE_STD</span><span style="color: #000000; "> = </span><span style="color: #008000; ">0</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_STATE_JOIN</span><span style="color: #000000; "> = </span><span style="color: #008000; ">1</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_STATE_MINJOIN</span><span style="color: #000000; "> = </span><span style="color: #008000; ">2</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_STATE_UPDATE</span><span style="color: #000000; "> = </span><span style="color: #008000; ">3</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_STATE_REPAIR</span><span style="color: #000000; "> = </span><span style="color: #008000; ">4</span><span style="color: #000000; ">;
    </span><span style="color: #000000; ">PASTRY_STATE_JOINUPDATE</span><span style="color: #000000; "> = </span><span style="color: #008000; ">5</span><span style="color: #000000; ">;
}


</span><span style="color: #808080; font-style: italic; ">//
// Base message for all messages used by Pastry
//
</span><span style="color: #800000; font-weight: bold; ">packet</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryMessage</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">extends</span><span style="color: #000000; "> </span><span style="color: #000000; ">BaseOverlayMessage</span><span style="color: #000000; ">
{
        </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">pastryMsgType</span><span style="color: #000000; "> = </span><span style="color: #000000; ">PASTRY_MSG_STD</span><span style="color: #000000; ">;    </span><span style="color: #808080; font-style: italic; ">// the PastryMsgType
</span><span style="color: #000000; ">}

</span><span style="color: #808080; font-style: italic; ">//
// Message used to join a pastry overlay
//
</span><span style="color: #800000; font-weight: bold; ">packet</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryJoinMessage</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">extends</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryMessage</span><span style="color: #000000; ">
{
        </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; "> </span><span style="color: #000000; ">sendStateTo</span><span style="color: #000000; "> = </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; ">::</span><span style="color: #000000; ">UNSPECIFIED_NODE</span><span style="color: #000000; ">;    </span><span style="color: #808080; font-style: italic; ">// TransportAddress of the node that wants to join
</span><span style="color: #000000; ">}


</span><span style="color: #808080; font-style: italic; ">//
// Message used to send a PastryState
//
</span><span style="color: #800000; font-weight: bold; ">packet</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryStateMessage</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">extends</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryMessage</span><span style="color: #000000; ">
{
        </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">pastryStateMsgType</span><span style="color: #000000; "> = </span><span style="color: #000000; ">PASTRY_STATE_STD</span><span style="color: #000000; ">;    </span><span style="color: #808080; font-style: italic; ">// the type of the PastryStateMessage
</span><span style="color: #000000; ">        </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; "> </span><span style="color: #000000; ">sender</span><span style="color: #000000; "> = </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; ">::</span><span style="color: #000000; ">UNSPECIFIED_NODE</span><span style="color: #000000; ">;    </span><span style="color: #808080; font-style: italic; ">// NodeHandle of the node sending this message
</span><span style="color: #000000; ">        </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; "> </span><span style="color: #000000; ">routingTable</span><span style="color: #000000; ">[];    </span><span style="color: #808080; font-style: italic; ">// the routingTable of the sender
</span><span style="color: #000000; ">        </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; "> </span><span style="color: #000000; ">leafSet</span><span style="color: #000000; ">[];    </span><span style="color: #808080; font-style: italic; ">// the leafSet of the sender
</span><span style="color: #000000; ">        </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; "> </span><span style="color: #000000; ">neighborhoodSet</span><span style="color: #000000; ">[];    </span><span style="color: #808080; font-style: italic; ">// the neighborhoodSet of the sender
</span><span style="color: #000000; ">        </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">joinHopCount</span><span style="color: #000000; "> = </span><span style="color: #008000; ">0</span><span style="color: #000000; ">;    </span><span style="color: #808080; font-style: italic; ">// counts the hops this message takes
</span><span style="color: #000000; ">        </span><span style="color: #000080; font-weight: bold; ">bool</span><span style="color: #000000; "> </span><span style="color: #000000; ">lastHop</span><span style="color: #000000; "> = </span><span style="color: #008000; ">false</span><span style="color: #000000; ">;    </span><span style="color: #808080; font-style: italic; ">// is this node the destination node?
</span><span style="color: #000000; ">        </span><span style="color: #000000; ">simtime_t</span><span style="color: #000000; "> </span><span style="color: #000000; ">timestamp</span><span style="color: #000000; ">;    </span><span style="color: #808080; font-style: italic; ">// simTime when sending this message
</span><span style="color: #000000; ">}

</span><span style="color: #808080; font-style: italic; ">//
// Message used to find a Pastry node
//
</span><span style="color: #800000; font-weight: bold; ">packet</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryFindNodeExtData</span><span style="color: #000000; ">
{
        </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; "> </span><span style="color: #000000; ">sendStateTo</span><span style="color: #000000; "> = </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; ">::</span><span style="color: #000000; ">UNSPECIFIED_NODE</span><span style="color: #000000; ">;    </span><span style="color: #808080; font-style: italic; ">// the sender of this message
</span><span style="color: #000000; ">        </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">joinHopCount</span><span style="color: #000000; "> = </span><span style="color: #008000; ">0</span><span style="color: #000000; ">;    </span><span style="color: #808080; font-style: italic; ">// counts the hops this message takes
</span><span style="color: #000000; ">}

</span><span style="color: #808080; font-style: italic; ">//
// Message used to inform about new PastryLeafs
//
</span><span style="color: #800000; font-weight: bold; ">packet</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryNewLeafsMessage</span><span style="color: #000000; ">
{
        </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; "> </span><span style="color: #000000; ">leafs</span><span style="color: #000000; ">[];    </span><span style="color: #808080; font-style: italic; ">// the new PastryLeafs
</span><span style="color: #000000; ">}


</span><span style="color: #800000; font-weight: bold; ">packet</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastrySendState</span><span style="color: #000000; ">
{
        </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; "> </span><span style="color: #000000; ">dest</span><span style="color: #000000; "> = </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; ">::</span><span style="color: #000000; ">UNSPECIFIED_NODE</span><span style="color: #000000; ">;
}

</span><span style="color: #800000; font-weight: bold; ">packet</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryLeafsetMessage</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">extends</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryMessage</span><span style="color: #000000; ">
{
        </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; "> </span><span style="color: #000000; ">sender</span><span style="color: #000000; "> = </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; ">::</span><span style="color: #000000; ">UNSPECIFIED_NODE</span><span style="color: #000000; ">;
        </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; "> </span><span style="color: #000000; ">sendStateTo</span><span style="color: #000000; "> = </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; ">::</span><span style="color: #000000; ">UNSPECIFIED_NODE</span><span style="color: #000000; ">;
        </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; "> </span><span style="color: #000000; ">leafSet</span><span style="color: #000000; ">[];
        </span><span style="color: #000000; ">simtime_t</span><span style="color: #000000; "> </span><span style="color: #000000; ">timestamp</span><span style="color: #000000; "> = </span><span style="color: #008000; ">0</span><span style="color: #000000; ">;
}

</span><span style="color: #800000; font-weight: bold; ">packet</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryRoutingRowRequestMessage</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">extends</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryMessage</span><span style="color: #000000; ">
{
        </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; "> </span><span style="color: #000000; ">sendStateTo</span><span style="color: #000000; "> = </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; ">::</span><span style="color: #000000; ">UNSPECIFIED_NODE</span><span style="color: #000000; ">;
        </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">row</span><span style="color: #000000; ">;

}
</span><span style="color: #800000; font-weight: bold; ">packet</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryRoutingRowMessage</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">extends</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryMessage</span><span style="color: #000000; ">
{
        </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; "> </span><span style="color: #000000; ">sender</span><span style="color: #000000; "> = </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; ">::</span><span style="color: #000000; ">UNSPECIFIED_NODE</span><span style="color: #000000; ">;
        </span><span style="color: #000000; ">NodeHandle</span><span style="color: #000000; "> </span><span style="color: #000000; ">routingTable</span><span style="color: #000000; ">[];
        </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">row</span><span style="color: #000000; ">;
        </span><span style="color: #000000; ">simtime_t</span><span style="color: #000000; "> </span><span style="color: #000000; ">timestamp</span><span style="color: #000000; "> = </span><span style="color: #008000; ">0</span><span style="color: #000000; ">;
}

</span><span style="color: #808080; font-style: italic; ">//
// Message used to request PastryState or a Leafset
//
</span><span style="color: #800000; font-weight: bold; ">packet</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryRequestMessage</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">extends</span><span style="color: #000000; "> </span><span style="color: #000000; ">PastryMessage</span><span style="color: #000000; ">
{
        </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; "> </span><span style="color: #000000; ">sendStateTo</span><span style="color: #000000; "> = </span><span style="color: #000000; ">TransportAddress</span><span style="color: #000000; ">::</span><span style="color: #000000; ">UNSPECIFIED_NODE</span><span style="color: #000000; ">;    </span><span style="color: #808080; font-style: italic; ">// TransportAddress of the node that requests the state
</span><span style="color: #000000; ">        </span><span style="color: #000080; font-weight: bold; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">pastryReqType</span><span style="color: #000000; "> = </span><span style="color: #000000; ">PASTRY_MSG_STD</span><span style="color: #000000; ">;    </span><span style="color: #808080; font-style: italic; ">// the PastryMsgType
</span><span style="color: #000000; ">}


</span></pre>
   <hr><p class="footer"><a href="http://creativecommons.org/licenses/by-sa/3.0" target="_top"><img src="by-sa.png"></a> This documentation is released under the <a href="http://creativecommons.org/licenses/by-sa/3.0" target="_top">Creative Commons license</a></p>
   </body>
</html>
